<template>

  <div class="app-container">

    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">

      <el-form-item label="用户名" prop="username">

        <el-input

          v-model="queryParams.username"

          placeholder="请输入用户名"

          clearable

          @keyup.enter.native="handleQuery"

        />

      </el-form-item>

      <el-form-item label="真实姓名" prop="name">

        <el-input

          v-model="queryParams.name"

          placeholder="请输入真实姓名"

          clearable

          @keyup.enter.native="handleQuery"

        />

      </el-form-item>

      <el-form-item label="角色" prop="roles">

        <el-input

          v-model="queryParams.roles"

          placeholder="请输入角色"

          clearable

          @keyup.enter.native="handleQuery"

        />

      </el-form-item>

      <el-form-item>

        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>

        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>

      </el-form-item>

    </el-form>



    <el-row :gutter="10" class="mb8">

      <el-col :span="1.5">

        <el-button

          type="primary"

          plain

          icon="el-icon-plus"

          size="mini"

          @click="handleAdd"

          v-hasPermi="['column:sub:add']"

        >新增</el-button>

      </el-col>

      <el-col :span="1.5">

        <el-button

          type="success"

          plain

          icon="el-icon-edit"

          size="mini"

          :disabled="single"

          @click="handleUpdate"

          v-hasPermi="['column:sub:edit']"

        >修改</el-button>

      </el-col>

      <el-col :span="1.5">

        <el-button

          type="danger"

          plain

          icon="el-icon-delete"

          size="mini"

          :disabled="multiple"

          @click="handleDelete"

          v-hasPermi="['column:sub:remove']"

        >删除</el-button>

      </el-col>

      <el-col :span="1.5">

        <el-button

          type="warning"

          plain

          icon="el-icon-download"

          size="mini"

          @click="handleExport"

          v-hasPermi="['column:sub:export']"

        >导出</el-button>

      </el-col>

      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>

    </el-row>



    <el-table v-loading="loading" :data="subList" @selection-change="handleSelectionChange">

      <el-table-column type="selection" width="55" align="center" />

      <el-table-column label="id" align="center" prop="id" />

      <el-table-column label="用户名" align="center" prop="username" />

      <el-table-column label="真实姓名" align="center" prop="name" />

      <el-table-column label="角色" align="center" prop="roles" />

      <el-table-column label="状态" align="center" prop="status">

        <template slot-scope="scope">
          {{scope.row.status==1?"正常":"已禁用"}}
        </template>

      </el-table-column>

      <el-table-column label="最近登录时间" align="center" prop="loginTime" width="180">

        <template slot-scope="scope">

          <span>{{ parseTime(scope.row.loginTime, '{y}-{m}-{d}') }}</span>

        </template>

      </el-table-column>

      <el-table-column label="创建时间" align="center" prop="createTime" width="180">

        <template slot-scope="scope">

          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>

        </template>

      </el-table-column>

      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">

        <template slot-scope="scope">

          <!--          <el-button-->

          <!--            size="mini"-->

          <!--            type="text"-->

          <!--            icon="el-icon-edit"-->

          <!--            @click="handleUpdate(scope.row)"-->

          <!--            v-hasPermi="['column:sub:edit']"-->

          <!--          >修改</el-button>-->

          <!--          <el-button-->

          <!--            size="mini"-->

          <!--            type="text"-->

          <!--            icon="el-icon-delete"-->

          <!--            @click="handleDelete(scope.row)"-->

          <!--            v-hasPermi="['column:sub:remove']"-->

          <!--          >删除</el-button>-->

          <div>

            <el-dropdown trigger="click">

              <span class="el-dropdown-link">

                <span class="el-icon-more-outline"></span>

              </span>

              <el-dropdown-menu slot="dropdown">

                <el-dropdown-item class="el-icon-edit"><el-button @click="handleUpdate(scope.row)">修改</el-button></el-dropdown-item><br>

                <el-dropdown-item class="el-icon-remove-outline"><el-button  @click="handleDisable(scope.row.id)">启用</el-button></el-dropdown-item><br>

                <el-dropdown-item class="el-icon-circle-check"><el-button  @click="handleDisablerr(scope.row.id)">禁用</el-button></el-dropdown-item><br>

                <el-dropdown-item class="el-icon-delete"><el-button @click="handleDelete(scope.row)">删除</el-button></el-dropdown-item>

              </el-dropdown-menu>

            </el-dropdown>

          </div>

        </template>

      </el-table-column>
    </el-table>



    <pagination

      v-show="total>0"

      :total="total"

      :page.sync="queryParams.pageNum"

      :limit.sync="queryParams.pageSize"

      @pagination="getList"

    />



    <!-- 添加或修改子账号管理对话框 -->

    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>

      <el-form ref="form" :model="form" :rules="rules" label-width="80px">

        <el-form-item label="用户名" prop="username">

          <el-input v-model="form.username" @blur="getusername" />

          <span style="color: #99a9bf">限4-16个字母和数字，必须以字母开头，不区分大小写</span>

        </el-form-item>

        <el-form-item label="真实姓名" prop="name">

          <el-input v-model="form.name"  />

        </el-form-item>

        <el-form-item label="角色" prop="roles">

          <el-select v-model="form.roles" >

            <el-option label="超级管理员" value="超级管理员"></el-option>

            <el-option label="张三" value="张三"></el-option>

            <el-option label="李四" value="李四"></el-option>

          </el-select>

        </el-form-item>

        <!--        <el-form-item label="密码" prop="password">-->

        <!--          <el-input v-model="form.password"  />-->

        <!--        </el-form-item>-->

        <el-form-item label="密码" prop="password">

          <el-input v-model="form.password"  />

        </el-form-item>

        <el-form-item label="状态" prop="status">

          <el-input v-model="form.status"  />

        </el-form-item>

        <el-form-item label="最近登录时间" prop="loginTime">

          <el-date-picker clearable

                          v-model="form.loginTime"

                          type="date"

                          value-format="yyyy-MM-dd"

                          placeholder="请选择最近登录时间">

          </el-date-picker>

        </el-form-item>

      </el-form>

      <div slot="footer" class="dialog-footer">

        <el-button type="primary" @click="submitForm">确 定</el-button>

        <el-button @click="cancel">取 消</el-button>

      </div>

    </el-dialog>

  </div>

</template>



<script>

import { listSub, getSub, delSub, addSub, updateSub,updateDisable,updateDisablerr } from "@/api/column/sub";
import {trim} from "core-js/internals/string-trim";



export default {

  name: "Sub",

  data() {

    return {

      // 遮罩层

      loading: true,

      // 选中数组

      ids: [],

      // 非单个禁用

      single: true,

      // 非多个禁用

      multiple: true,

      // 显示搜索条件

      showSearch: true,

      // 总条数

      total: 0,

      // 子账号管理表格数据

      subList: [],

      // 弹出层标题

      title: "",

      // 是否显示弹出层

      open: false,

      // 查询参数

      queryParams: {

        pageNum: 1,

        pageSize: 10,

        username: null,

        name: null,

        roles: null,

        loginTime: null,

        createTime:null,

        password: null

      },

      // 表单参数

      form: {},

      // 表单校验

      rules: {

      }

    };

  },

  created() {

    this.getList();

    this.getusername();

  },

  methods: {
    getusername(){
      var re = new RegExp("^[a-zA-Z][a-zA-Z0-9]{3,15}$");
      if(!re.test(trim(this.form.username))){
        alert("用户代码必须为数字或字母，只能为4~6位");
          this.form.username.focus();
          return;
      }
    },

    handleDisablerr(id){

      updateDisablerr(id).then(response => {

        this.$modal.msgSuccess("修改成功");

        this.getList();

      })

    },

    handleDisable(id){

      updateDisable(id).then(response => {

        this.$modal.msgSuccess("修改成功");

        this.getList();

      })

    },

    /** 查询子账号管理列表 */

    getList() {

      this.loading = true;

      listSub(this.queryParams).then(response => {

        this.subList = response.rows;

        this.total = response.total;

        this.loading = false;

        this.open=false;

      });

    },

    // 取消按钮

    cancel() {

      this.open = false;

      this.reset();

    },

    // 表单重置

    reset() {

      this.form = {

        id: null,

        username: null,

        name: null,

        roles: null,

        status: null,

        password: null,

        loginTime: null,

        createTime: null

      };

      this.resetForm("form");

    },

    /** 搜索按钮操作 */

    handleQuery() {

      this.queryParams.pageNum = 1;

      this.getList();

    },

    /** 重置按钮操作 */

    resetQuery() {

      this.resetForm("queryForm");

      this.handleQuery();

    },

    // 多选框选中数据

    handleSelectionChange(selection) {

      this.ids = selection.map(item => item.id)

      this.single = selection.length!==1

      this.multiple = !selection.length

    },



    // handleUA(){

    //   if (this.form.password==null){

    //     this.handleUpdate()

    //   }else {

    //     this.handleAdd()

    //   }

    // },

    /** 新增按钮操作 */

    handleAdd() {

      this.reset();

      this.open = true;

      this.title = "添加子账号管理";

    },

    /** 修改按钮操作 */

    handleUpdate(row) {

      this.reset();

      const id = row.id || this.ids

      getSub(id).then(response => {

        this.form = response.data;

        this.open = true;

        this.title = "修改子账号管理";

      });

    },

    /** 提交按钮 */

    submitForm() {

      this.$refs["form"].validate(valid => {

        if (valid) {

          if (this.form.id != null) {

            updateSub(this.form).then(response => {

              this.$modal.msgSuccess("修改成功");

              this.open = false;

              this.getList();

            });

          } else {

            addSub(this.form).then(response => {

              this.$modal.msgSuccess("新增成功");

              this.open = false;

              this.getList();

            });

          }

        }

      });

    },

    /** 删除按钮操作 */

    handleDelete(row) {

      const ids = row.id || this.ids;

      this.$modal.confirm('是否确认删除子账号管理编号为"' + ids + '"的数据项？').then(function() {

        return delSub(ids);

      }).then(() => {

        this.getList();

        this.$modal.msgSuccess("删除成功");

      }).catch(() => {});

    },

    /** 导出按钮操作 */

    handleExport() {

      this.download('column/sub/export', {

        ...this.queryParams

      }, `sub_${new Date().getTime()}.xlsx`)

    }

  }

};

</script>
